作用

当使用C++编译器对C++源码编译时,对C函数采用”C”语言方式编译和连接(函数导出名不变)

为什么需要extern "C"

因为C++支持函数重载,所以对函数名存在修饰操作。

若一个函数为普通全局函数,制作为dll,其他C程序进行调用,当编译该程序采用C编译器,无法找到该符号,因为C编译器与C++编译器对函数名的修饰规则不一致!

所以为了使C编译器能够使用这些函数,需要使用extern "C"声明。

惯用法

1
2
3
4
5
6
7
8
9
#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
# endif

留言

2015-03-26